//引入axios
import axios  from "axios";
import { ElMessageBox } from 'element-plus'
import router from "../router/index"
import NProgress from "nprogress"
//配置axios

let http =axios.create({
    //基础地址
    baseURL:'/api',
    //超时设置
    timeout:1000*10,
    //是否携带凭据
    withCredentials:true,
})
//配置拦截器

//请求拦截器,所有axios请求都会被拦截器拦截,可以通过拦截器添加额外的配置

http.interceptors.request.use(config=>{
    NProgress.start()
    let token =sessionStorage.getItem('zjl-token')
    config.headers.authorization=token
    return config
})

//响应拦截器,所有的axios响应都会被响应拦截器拦截,可以对拦截的响应进行额外的配置
http.interceptors.response.use(config=>{
    NProgress.done()
    //config是每个请求响应的结果，所有的请求返回结果都需要经过这个门，才能到组件那去
    if(config.data.state){
        return config
    }else{

        // 不需要弹窗提示的路径
        let excludePaths = ["/sms/send","/order/query_order_status"]
        if (!excludePaths.includes(config.config.url)) {
            //响应错误
            ElMessageBox.alert(config.data.msg, '错误提示', { type: 'error' })
            
        }

        // 判断登录失效的情况 状态码是前后台约定状态码
        if(config.data.code==='10022' || config.data.code==='1004'){
        // 推到登录页，清除token
        sessionStorage.removeItem('zjl-token')
        router.push('/login')
        // 刷新页面
        location.reload()
        }

        
        
        return Promise.reject(config.data.msg)
    }
})

export default http